package com.study.compose.coroutines

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

/**
 * 当我们使用GlobalScope.launch时，我们会创建一个顶层协程，就是它的生命周期很长，
 * 虽然它很轻量，但运行时仍会消耗一些内存资源。我们还需要记着去join，有些繁琐。
 *
 * 有一个好的解决办法，我们可以在代码中使用结构化并发。我们可以在执行操作所在的指定作用域内启动协程。
 *
 * Test01的实例可以修改如下：
 */

suspend fun getData(): String {
    delay(1000)
    return "world"
}

fun main() = runBlocking {

    /**
     * 在runBlocking作用域中启动一个协程，外部协程会等待其作用域内所有协程都执行结束后再结束执行
     *
     */
    launch {
        val data = getData()
        print(data)
    }

    print("hello,")
}